function singleNumber(nums: number[]): number {
    //? 总体思路：考虑数字的二进制形式，对于出现三次的数字，各 二进制位 出现的次数都是 3的倍数。
    //? 因此，统计所有数字的各二进制位中 1 的出现次数，并对 3 求余，结果则为只出现一次的数字。
    let res = 0;

    for (let i = 0; i < 32; i++) {
        let count = 0;
        //? 对每个数的每个位上的1进行统计
        for (let j = 0; j < nums.length; j++) {
            //? 对于每一个数 右移i位 得到该位上是否为1
            if ((nums[j] >> i & 1) == 1) {
                count++;
            }
        }

        //? 找到某一位取余为 1 的数，并左移，为了将这一位循环结束后移至原位
        if (count % 3 !== 0) {
            res = res | 1 << i;
        }
    }

    return res;
};
